﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using CeA.Reports.Atendimento.Web.ServerControls;
using System.Collections.Generic;
using CeA.Reports.Atendimento.Web.Helpers;
using CeA.Reports.Atendimento.DataAccess.DTO;
using Qtech.Reports.Atendimento.Services;
using CeA.Reports.Atendimento.DataAccess.Criteria;
using CeA.Reports.Atendimento.Web.WebControls;

namespace CeA.Reports.Atendimento.Web.admin {

    public partial class regiao : System.Web.UI.Page {
        
        protected void Page_Init(object sender, EventArgs e)                            {
            cmdPesquisarRfs.Click += new EventHandler(cmdPesquisarRfs_Click);
            cmdPesquisar.Click += new EventHandler(cmdPesquisar_Click);
            PesquisaRfs.Confirmar += new PesquisaRfs.ConfirmarEventHandler(PesquisaRfs_Confirmar);
            MessageBox.Command += new MessageBox.CommandEventHandler(MessageBox_Command);
        }

        protected void Page_Load(object sender, EventArgs e)                            {
            menuInterno.addMenuItem("Incluir Nova Região", "/admin/regiaocadastro.aspx");
        }

        protected void cmdPesquisarRfs_Click(object sender, EventArgs e)                {
            PesquisaRfs.pop();
        }

        protected void PesquisaRfs_Confirmar(object sender, PesquisaRfsEventArgs e)    {
            hdnRfsId.Value = Convert.ToString(e.Id);
            txtRfs.Text = e.Nome;
            txtRfs.ToolTip = e.Descricao;
        }

        protected void cmdPesquisar_Click(object sender, EventArgs e)                   {
            CarregarLista();
        }
       
        protected void cmdEditar_Click(object sender, EventArgs e)                      {
            List<GroupRadioButton> rbtList = DatalistHelper.FindControl<GroupRadioButton>(dtlRfs, "rbtItem");

            foreach (GroupRadioButton rbt in rbtList) {
                if (rbt.Checked) {
                    CodigoRegiao = Convert.ToInt32(rbt.Text);
                    Server.Transfer("regiaocadastro.aspx", true);
                    return;
                }
            }

            MessageBox.pop("É necessário selecionar um registro para editar!");
        }

        protected void cmdExcluir_Click(object sender, EventArgs e)                     {
            List<GroupRadioButton> rbtList = DatalistHelper.FindControl<GroupRadioButton>(dtlRfs, "rbtItem");

            foreach (GroupRadioButton rbt in rbtList) {
                if (rbt.Checked) {
                    CodigoRegiao = Convert.ToInt32(rbt.Text);
                    
                    MessageBox.pop("Deseja excluir o registro selecionado?", MessageBoxButtoms.YesNo);
                    MessageBox.CommandName = "DELETE";
                    
                    return;
                }
            }

            MessageBox.pop("É necessário selecionar um registro para excluir!");

            /*
            MessageBox.Command += new MessageBox.CommandEventHandler(delegate(object source, MessageBoxEventArgs args) {
                if (args.Command == MessageBoxCommand.Yes) {
                    //CadastroFacade.RemoveRegiao(CodigoRegiao);
                    string msg = "Teste";
                }
                else {
                    string msg = "Teste";
                }
            });
             * */

            
        }
        
        protected void MessageBox_Command(object sender, MessageBoxEventArgs e)         {
            if (e.CommandName == "DELETE" && e.Command == MessageBoxCommand.Yes) {
                
                try
                {
                    CadastroFacade.RemoveRegiao(CodigoRegiao);
                }
                catch (InvalidOperationException ex)
                {
                    MessageBox.pop(ex.Message);
                }
                CarregarLista();
            }
        }

        private void CarregarLista()                                                    {
            RegiaoCriteria filter = new RegiaoCriteria();
            filter.Sigla = txtSigla.Text;
            filter.Nome = txtNome.Text;

            if (hdnRfsId.Value != String.Empty)
                filter.addRfs(Convert.ToInt32(hdnRfsId.Value));

            List<RegiaoDTO> ds = CadastroFacade.FindRegiao(filter);

            dtlRfs.DataSource = ds;
            dtlRfs.DataBind();


            // escondendo os botões de ordenação para
            // a primera e a segunda linha
            foreach (DataListItem item in dtlRfs.Items)
            { 
                if (item.ItemIndex == 0){
                    item.FindControl("lnkSobe").Visible = false;
                }

                if (item.ItemIndex == (dtlRfs.Items.Count-1)){
                    item.FindControl("lnkDesce").Visible = false;
                }
            }

        }

        public int CodigoRegiao                                                         {
            get {
                if (ViewState["m_codigoRegiao"] != null)
                    return Convert.ToInt32(ViewState["m_codigoRegiao"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoRegiao", value);
            }
        }

        protected void dtlRfs_ItemCommand(object source, DataListCommandEventArgs e)
        {

            //auxiliares
            int idSobe = 0;
            int idDesce = 0;


            switch (e.CommandName.ToLower())
            {
                case "sobe":

                    foreach (DataListItem item in dtlRfs.Items)
                    {
                        ImageButton controle = (ImageButton)item.FindControl("lnkSobe");
                        int idRegiao = Convert.ToInt32(controle.CommandArgument);
                        if (item.ItemIndex == e.Item.ItemIndex) idSobe = idRegiao;
                        if (item.ItemIndex == (e.Item.ItemIndex - 1)) idDesce = idRegiao;
                        controle = null;
                    }

                    CadastroFacade.ChangePosition(idSobe, idDesce);


                    break;

                case "desce":

                    foreach (DataListItem item in dtlRfs.Items)
                    {
                        ImageButton controle = (ImageButton)item.FindControl("lnkSobe");
                        int idRegiao = Convert.ToInt32(controle.CommandArgument);
                        if (item.ItemIndex == e.Item.ItemIndex) idDesce = idRegiao;
                        if (item.ItemIndex == (e.Item.ItemIndex + 1)) idSobe = idRegiao;
                        controle = null;
                    }

                    CadastroFacade.ChangePosition(idSobe, idDesce);


                    break;

                default:
                    break;

            }

            CarregarLista();

        }

    }

    /// <summary>
    /// classe auxiliar para a função de troca de posições
    /// </summary>
    public class auxItem
    {

        private int _indexSelecionado;
        public int IndexSelecionado
        {
            get { return _indexSelecionado; }
            set { _indexSelecionado = value; }
        }

        private int _idSelecionado;
        public int IdSelecionado
        {
            get { return _idSelecionado; }
            set { _idSelecionado = value; }
        }

        private int _idRegiaoAnterior;
        public int IdRegiaoAnterior
        {
            get { return _idRegiaoAnterior; }
            set { _idRegiaoAnterior = value; }
        }

    }
}
